package com.uzai.console.service.wechatprivate;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.module.deviceproduct.DeviceProductQuery;
import com.uzai.console.dto.wechatprivate.devicewechatinfo.*;
import com.uzai.console.entity.DeviceAuth;
import com.uzai.console.entity.DeviceWechatInfo;
import com.uzai.console.vo.deviceproduct.DeviceProductVo;
import com.uzai.console.vo.wechatprivate.devicewechatinfo.*;

import java.util.List;

/**
 * 个人微信机器人
 * @author liuqi
 * @date 2021年08月19日 16:06
 */
public interface DeviceWechatInfoService {


    /**
     * 查询个人微信机器人列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoQuery
     * @return null
     */
    Page<DeviceWechatInfoVo> findDeviceWechatInfoList(DeviceWechatInfoQuery deviceWechatInfoQuery);

    /**
     * 查询个人微信机器人详情
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdDto
     * @return null
     */
    DeviceWechatInfoVo findDeviceWechatInfoInfo(DeviceWechatInfoIdDto deviceWechatInfoIdDto);

    /**
     * 添加个人机器人
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceGroupInfoAddDto
     */
    DeviceWechatInfoAddVo addDeviceWechatInfo(DeviceWechatInfoAddDto deviceGroupInfoAddDto);

    /**
     * 添加个人机器人新版（只负责添加移动端机器人，如果未授权则试用5天）
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceGroupInfoAddDto_new
     */
    void addDeviceWechatInfo_new(DeviceWechatInfoAddDto_new deviceGroupInfoAddDto_new);

    /**
     * 修改机器人信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceGroupInfoDto
     */
    void updateDeviceWechatInfo(DeviceWechatInfoDto deviceGroupInfoDto);

    /**
     * 批量修改机器人信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceWechatInfoBatchDto
     */
    void batchUpdateDeviceWechatInfo(DeviceWechatInfoBatchDto deviceWechatInfoBatchDto);

    /**
     * 个人微信机器人删除-假删除（修改是否删除状态）
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoDelDto
     * @return null
     */
    Boolean delDeviceWechatInfo(DeviceWechatInfoDelDto deviceWechatInfoDelDto);

    /**
     * 更新电脑端客户端软件
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdDto
     * @return null
     */
    void updatePcClientSoft(DeviceWechatInfoIdDto deviceWechatInfoIdDto);

    /**
     * 批量更新电脑端客户端软件
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdListDto
     * @return null
     */
    void batchUpdatePcClientSoft(DeviceWechatInfoIdListDto deviceWechatInfoIdListDto);

    /**
     * 重启电脑端客户端软件
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdDto
     * @return null
     */
    void restartPcClientSoft(DeviceWechatInfoIdDto deviceWechatInfoIdDto);

    /**
     * 批量重启电脑端客户端软件
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdListDto
     * @return null
     */
    void batchRestartPcClientSoft(DeviceWechatInfoIdListDto deviceWechatInfoIdListDto);


    /**
     * 退出电脑端客户端软件
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdDto
     * @return null
     */
    void quitPcClientSoft(DeviceWechatInfoIdDto deviceWechatInfoIdDto);

    /**
     * 批量退出电脑端客户端软件
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdListDto
     * @return null
     */
    void batchQuitPcClientSoft(DeviceWechatInfoIdListDto deviceWechatInfoIdListDto);

    /**
     * 退出电脑端微信
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdDto
     * @return null
     */
    void quitPcWechat(DeviceWechatInfoIdDto deviceWechatInfoIdDto);

    /**
     * 批量退出电脑端微信
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdListDto
     * @return null
     */
    void batchQuitPcWechat(DeviceWechatInfoIdListDto deviceWechatInfoIdListDto);

    /**
     * 修改工作状态
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatRecvmsgTypeDto
     * @return null
     */
    void updateRecvmsgType(DeviceWechatRecvmsgTypeDto deviceWechatRecvmsgTypeDto);

    /**
     * 批量修改工作状态
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatRecvmsgTypeBatchDto
     * @return null
     */
    void batchUpdateRecvmsgType(DeviceWechatRecvmsgTypeBatchDto deviceWechatRecvmsgTypeBatchDto);

    /**
     * 购买授权
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceWechatInfoBuyAuthDto
     */
    DeviceWechatInfoAddVo buyDeviceAuth(DeviceWechatInfoBuyAuthDto deviceWechatInfoBuyAuthDto);

    /**
     * 查询添加或者购买总金额
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceAmountDto
     */
    DeviceAmountVo getAmount(DeviceAmountDto deviceAmountDto);


    /**
     * 查询购买产品授权价格
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param devicePriceDto
     */
    DevicePriceVo getDevicePrice(DevicePriceDto devicePriceDto);

    /**
     * 查询设备产品列表
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceProductQuery
     */
    List<DeviceProductVo> deviceProductList(DeviceProductQuery deviceProductQuery);

    /**
     * 机器人封号名片转发
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param banTransferDto
     */
    void banTranfer(BanTransferDto banTransferDto);

    /**
     * 刷新手机卡密授权
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceWechatInfoIdDto
     */
    void refreshMobileApp(DeviceWechatInfoIdDto deviceWechatInfoIdDto);

    /**
     * 转移授权时间
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param tranferAuthTimeDto
     */
    void transferAuthTime(TranferAuthTimeDto tranferAuthTimeDto);

    /**
     * 删除机器人且转移数据
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param delAndTransferDataDto
     */
    void delAndTransferData(DelAndTransferDataDto delAndTransferDataDto);

    /**
     * 刷新在线状态
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param merId
     */
    void refreshOnlineStatus(Long merId);

    /**
     * 查询所有个人微信机器人列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoQuery
     * @return null
     */
    List<DeviceWechatInfoVo> findDeviceWechatInfoSelect(DeviceWechatInfoQuery deviceWechatInfoQuery);

    /**
     * 更新手机版
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdDto
     * @return null
     */
    void updateMobileClientSoft(DeviceWechatInfoIdDto deviceWechatInfoIdDto);

    /**
     * 批量更新手机版
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoIdListDto
     * @return null
     */
    void batchUpdateMobileClientSoft(DeviceWechatInfoIdListDto deviceWechatInfoIdListDto);

    /**
     * 增加试用期授权
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceWechatInfoAddProbationAuth
     * @return null
     */
    void addProbationAuth(DeviceWechatInfoAddProbationAuth deviceWechatInfoAddProbationAuth);

    /**
     * 刷新个人微信机器人授权信息
     * @author jitwxs
     * @date 2023/8/17 15:47
     * @param deviceWechatInfo
     * @return null
     */
    void flashDeviceAuth(DeviceWechatInfo deviceWechatInfo, List<DeviceAuth> deviceAuthList);

    /**
     * 刷新个人微信机器人授权信息
     * @author jitwxs
     * @date 2023/8/17 15:47
     * @param deviceWechatInfo
     * @return null
     */
    void flashDeviceAuth(DeviceWechatInfo deviceWechatInfo);


    /**
     * 手机号运营商查询
     * @author jitwxs
     * @date 2023/8/17 15:47
     * @param mobiletypeFindDto
     * @return null
     */
    MobiletypeFindVo findMobiletype(MobiletypeFindDto mobiletypeFindDto);
}
